<template>
	<form-item-wrapper :designer="thisDesigner" :field="thisField" :rules="rules" :design-state="thisDesignState"
					   :parent-widget="thisParentWidget" :parent-list="thisParentList" :index-of-parent-list="thisIndexOfParentList" :style="field.options.customStyle"
					   :sub-form-row-index="thisSubFormRowIndex" :sub-form-col-index="thisSubFormColIndex" :sub-form-row-id="thisSubFormRowId">
		<select-flow v-model:runId="fieldModel" :queryType="this.thisField.options.fetchModelValue"
					 :disabled="thisField.options.disabled || thisField.options.appendButtonDisabled"
					 ref="selectFlowSelectDialog" :is-not-show-btn="true" :resType="1" :mode="this.thisField.options.multiple"/>
	</form-item-wrapper>
</template>

<script>
import selectFlow from "@/views/module/selectFlow";
import FormItemWrapper from './form-item-wrapper'
import emitter from '@/utils/emitter'
import fieldMixin from "@/components/designer/form-designer/form-widget/field-widget/fieldMixin";
export default {
	name: "flow-relation-widget",
	componentName: 'FieldWidget',  //必须固定为FieldWidget，用于接收父级组件的broadcast事件
	mixins: [emitter, fieldMixin],
	props: {
		field: Object,
		parentWidget: Object,
		parentList: Array,
		indexOfParentList: Number,
		designer: Object,
		designState: {
			type: Boolean,
			default: false
		},
		subFormRowIndex: { /* 子表单组件行索引，从0开始计数 */
			type: Number,
			default: -1
		},
		subFormColIndex: { /* 子表单组件列索引，从0开始计数 */
			type: Number,
			default: -1
		},
		subFormRowId: { /* 子表单组件行Id，唯一id且不可变 */
			type: String,
			default: ''
		},
	},
	components: {
		FormItemWrapper,
		selectFlow,
	},
	data() {
		return {
			thisField: this.field,
			thisDesigner:this.designer,
			thisParentWidget: this.parentWidget,
			thisParentList:this.parentList,
			thisIndexOfParentList:this.indexOfParentList,
			thisDesignState:this.designState,
			thisSubFormRowIndex:this.subFormRowIndex,
			thisSubFormColIndex:this.subFormColIndex,
			thisSubFormRowId:this.subFormRowId,
			oldFieldValue: null, //field组件change之前的值
			fieldModel: null,
			rules: [],
		}
	},
	computed: {
		inputType() {
			if (this.thisField.options.type === 'number') {
				return 'text'  //当input的type设置为number时，如果输入非数字字符，则v-model拿到的值为空字符串，无法实现输入校验！故屏蔽之！！
			}
			return this.thisField.options.type
		},

	},
	watch: {
		"fieldModel":{
			handler(val)
			{
				this.handleChangeEvent(val)
			}
		},
	},
	beforeCreate() {
		/* 这里不能访问方法和属性！！ */
	},

	created() {
		/* 注意：子组件mounted在父组件created之后、父组件mounted之前触发，故子组件mounted需要用到的prop
		   需要在父组件created中初始化！！ */
		this.initFieldModel()
		this.registerToRefList()
		this.initEventHandler()
		this.buildFieldRules()

		this.handleOnCreated()
	},

	mounted() {
		this.handleOnMounted()
	},

	beforeUnmount() {
		this.unregisterFromRefList()
	},

	methods: {
	}
}
</script>

<style lang="scss" scoped>
@import "../../../../../assets/formdesigner/styles/global.scss"; /* form-item-wrapper已引入，还需要重复引入吗？ */

</style>
